CodeStyle

Lev Kovalenko

Почему это важно?

Начинающий программист

Опытный программист

Основная мотивация появления CodeStyle

  • Ускорить понимания и ревью кода.
  • Уменьшить стилистическое разнообразие кода.
  • Уменьшить сложность кода.
  • Запретить использование плохих практик.

Читаемость кода

Есть 2 способа ускорить чтение и понимания кода:

  1. Постоянно наращивать базу знаний разработчиков по тому, как может выглядеть код.
  2. Привести весь код к одному стандарту, задать тот самый code style

Pep8

AutoFormatters

Linters

Linter Category Description
Pylint Logical & Stylistic Checks for errors, tries to enforce a coding standard, looks for code smells
PyFlakes Logical Analyzes programs and detects various errors
Pycodestyle Stylistic Checks against some of the style conventions in PEP8
Pydocstyle Stylistic Checks compliance with Python docstring conventions
Bandit Logical Analyzes code to find common security issues
MyPy Logical Checks for optionally-enforced static types

Анализаторы кода - Radon

  • Цикломатическая сложность
  • Метрика Холстеда
  • Индекс поддерживаемости кода

Как это работает?

import ast
from utils import ast_print

ast_print(ast.parse("four=4+4"))
Module(
 body=[
  Assign(
   targets=[
    Name(id='four', ctx=Store())],
   value=BinOp(
    left=Constant(value=4),
    op=Add(),
    right=Constant(value=4)))],
 type_ignores=[])